/*
 * Messenger.java
 * Copyright (C) 2007 by Ezequiel Turovetzky
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 3
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
package ar.com.botonera.gui.common;

import static javax.swing.JOptionPane.ERROR_MESSAGE;
import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
import static javax.swing.JOptionPane.WARNING_MESSAGE;
import static javax.swing.JOptionPane.YES_NO_OPTION;
import static javax.swing.JOptionPane.showConfirmDialog;
import static javax.swing.JOptionPane.showMessageDialog;

import java.awt.Component;

import javax.swing.JOptionPane;

import ar.com.botonera.Application;

/**
 * Simple clase que prov&eacute;e de m&eacute;todos est&aacute;ticos
 * para mostrar mensajes de informaci&oacute;n y/o error.
 * @author <a href="mailto:tezequiel@gmail.com">Ezequiel Turovetzky</a>
 * @version 1.0
 */
public final class Messenger {
	
	/** Valor devuelto cuando el usuario confirma un di&aacute;logo de confirmaci&oacute;n */
	public static final int YES_OPTION = JOptionPane.YES_OPTION;
	/** Valor devuelto cuando el usuario no confirma un di&aacute;logo de confirmaci&oacute;n */
	public static final int NO_OPTION = JOptionPane.NO_OPTION;

    //~ Constructors -----------------------------------------------------------

    /**
     * Constructor privado.
     * <br>Esta clase no debe ser instanciada.
     */
    private Messenger() {
    }

    //~ Methods ----------------------------------------------------------------

    /**
     * Muestra un mensaje de informaci&oacute;n, con el t&iacute;tulo
     * especificado para la ventana que ser&aacute; utilizada
     * para mostrar el mensaje.
     * @param title T&iacute;tulo de la ventana.
     * @param message El mensaje a mostrar.
     */
    public static void showInformationMessage(String title, String message) {
        Component parent = Application.getInstance().getWindow();
        showMessageDialog(parent, message, title, INFORMATION_MESSAGE);
    }

    /**
     * Muestra un mensaje de error, con el t&iacute;tulo
     * especificado para la ventana que ser&aacute; utilizada
     * para mostrar el mensaje.
     * @param title T&iacute;tulo de la ventana.
     * @param message El mensaje a mostrar.
     */
    public static void showErrorMessage(String title, String message) {
        Component parent = Application.getInstance().getWindow();
        showMessageDialog(parent, message, title, ERROR_MESSAGE);
    }
    
    /**
     * Muestra un mensaje a confirmar por el usuario.
     * Presenta un titulo, un mensaje y dos botones <code>Si</code> y
     * <code>No</code>.
     * @param title Titulo de la ventana.
     * @param message Mensaje a mostrar.
     * @return Devuelve <code>Messenger.YES_OPTION</code> si el usuario seleccion&oacute;
     * la opci&oacute;n <code>Si&aacute;</code>, o <code>Messenger.NO_OPTION</code> en caso opuesto.
     */
    public static int showConfirmMessage(String title, String message) {
    	Component parent = Application.getInstance().getWindow();
    	return showConfirmDialog(parent, message, title, YES_NO_OPTION, WARNING_MESSAGE);
    }
}

